#include<iostream>
#include<algorithm>

using namespace std;

const int N=310;

int n,m;
int g[N][N];
int f[N][N];

int s[2][4]={
	1,-1,0,0,
	0,0,1,-1
};


int dp(int x,int y)
{
	if(f[x][y]!=0) return f[x][y];
	
	f[x][y]=1;
	for(int i=0;i<4;i++){
		int a=x+s[0][i],b=y+s[1][i];
		if(a>=1&&a<=n&&b>=1&&b<=m&&g[a][b]<g[x][y])
			f[x][y]=max(f[x][y],dp(a,b)+1);
	}
	
	return f[x][y];
}


int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>g[i][j];
	
	int sum=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			sum=max(sum,dp(i,j));
	
	cout<<sum<<endl;
	
	return 0;
}
